package com.zx._12_算法.剑指offer._2022;

/**
 * https://leetcode.cn/problems/jian-sheng-zi-lcof/
 * 推论一： 将绳子 以相等的长度等分为多段 ，得到的乘积最大。
 * 推论二： 尽可能将绳子以长度 3 等分为多段时，乘积最大。
 */
public class 剪绳子 {

    public static void main(String[] args) {
        System.out.println(8 / 3);// 1
        System.out.println(8 % 3);// 1
    }

    public int cuttingRope(int n) {
        if (n <= 3) {
            return n - 1;
        }
        int a = n / 3;
        int b = n % 3;
        if (b == 0) {
            // 是3的倍数
            return (int) Math.pow(3, a);
        } else if (b == 1) {
            // 是3的倍数 余1。
            return (int) Math.pow(3, a - 1) * 4;
        } else {
            return (int) Math.pow(3, a) * 2;
        }
    }
}
